Skip to content

Conversation

@zetxqx
Copy link
Contributor

@zetxqx zetxqx commented Nov 13, 2025

What type of PR is this?

/kind test
/area conformance-test

What this PR does / why we need it:

A conformance test to verify that the gateway correctly reports the endpoint that served the request.

This PR is based on a previous PR #1855 .

verified with GKE

go test -v ./conformance -args -debug -gateway-class gke-l7-regional-external-managed -cleanup-base-resources=false -allow-crds-mismatch=true -run-test GatewayDestinationEndpointServed

Result:

    roundtripper.go:262: 2025-11-13T19:18:07.43605216Z: Received Response:
        < HTTP/1.1 200 OK
        < Connection: close
        < Transfer-Encoding: chunked
        < Content-Type: application/json
        < Date: Thu, 13 Nov 2025 19:18:07 GMT
        < Via: 1.1 google
        < X-Conformance-Test-Served-Endpoint: 10.116.13.18:3000
        < X-Content-Type-Options: nosniff
        < X-Went-Into-Resp-Headers: true
        < 
        < 261
        < {"headers":{"Accept-Encoding":["gzip"],"Test-Epp-Endpoint-Selection":["10.116.13.18"],"User-Agent":["Go-http-client/1.1"],"Via":["1.1 google"],"X-Echo-Set-Header":[""],"X-Forwarded-For":["34.170.214.239,35.212.149.233"],"X-Forwarded-Proto":["http"],"X-Gateway-Destination-Endpoint":["10.116.13.18:3000"],"X-Request-Id":["10d53a31-1740-448b-972c-a7dcfdf33276"]},"host":"primary.example.com","ingress":"","method":"POST","namespace":"inference-conformance-app-backend","path":"/destination-endpoint-served-test","pod":"primary-inference-model-server-deployment-845888f54f-hcblv","proto":"HTTP/1.1","service":""}
        < 0
        < 
        < 
        
        
    http.go:282: 2025-11-13T19:18:07.436225548Z: Request passed
=== NAME  TestConformance/GatewayDestinationEndpointServed
    apply.go:283: 2025-11-13T19:18:07.436304048Z: Deleting httproute-for-destination-endpoint-served HTTPRoute
=== RUN   TestConformance/GatewayFollowingEPPRouting
    conformance.go:66: Skipping GatewayFollowingEPPRouting: test explicitly skipped
=== RUN   TestConformance/GatewayWeightedAcrossTwoInferencePools
    conformance.go:66: Skipping GatewayWeightedAcrossTwoInferencePools: test explicitly skipped
=== RUN   TestConformance/HTTPRouteInvalidInferencePoolRef
    conformance.go:66: Skipping HTTPRouteInvalidInferencePoolRef: test explicitly skipped
=== RUN   TestConformance/HTTPRouteMultipleGatewaysDifferentPools
    conformance.go:66: Skipping HTTPRouteMultipleGatewaysDifferentPools: test explicitly skipped
=== RUN   TestConformance/InferencePoolAccepted
    conformance.go:66: Skipping InferencePoolAccepted: test explicitly skipped
=== RUN   TestConformance/InferencePoolHTTPRoutePortValidation
    conformance.go:66: Skipping InferencePoolHTTPRoutePortValidation: test explicitly skipped
=== RUN   TestConformance/InferencePoolInvalidEPPService
    conformance.go:66: Skipping InferencePoolInvalidEPPService: test explicitly skipped
=== RUN   TestConformance/HTTPRouteMultipleRulesDifferentPools
    conformance.go:66: Skipping HTTPRouteMultipleRulesDifferentPools: test explicitly skipped
=== RUN   TestConformance/InferencePoolResolvedRefsCondition
    conformance.go:66: Skipping InferencePoolResolvedRefsCondition: test explicitly skipped
--- PASS: TestConformance (110.64s)
    --- SKIP: TestConformance/EppUnAvailableFailOpen (0.00s)
    --- PASS: TestConformance/GatewayDestinationEndpointServed (107.07s)
        --- PASS: TestConformance/GatewayDestinationEndpointServed/Request_is_served_by_the_selected_backend_pod (79.48s)
    --- SKIP: TestConformance/GatewayFollowingEPPRouting (0.00s)
    --- SKIP: TestConformance/GatewayWeightedAcrossTwoInferencePools (0.00s)
    --- SKIP: TestConformance/HTTPRouteInvalidInferencePoolRef (0.00s)
    --- SKIP: TestConformance/HTTPRouteMultipleGatewaysDifferentPools (0.00s)
    --- SKIP: TestConformance/InferencePoolAccepted (0.00s)
    --- SKIP: TestConformance/InferencePoolHTTPRoutePortValidation (0.00s)
    --- SKIP: TestConformance/InferencePoolInvalidEPPService (0.00s)
    --- SKIP: TestConformance/HTTPRouteMultipleRulesDifferentPools (0.00s)
    --- SKIP: TestConformance/InferencePoolResolvedRefsCondition (0.00s)
PASS
ok  	sigs.k8s.io/gateway-api-inference-extension/conformance	110.864s

Which issue(s) this PR fixes:

Fixes #1670

Does this PR introduce a user-facing change?:

New conformance test to verify: https://github.com/kubernetes-sigs/gateway-api-inference-extension/tree/main/docs/proposals/004-endpoint-picker-protocol#destination-endpoint-served

@k8s-ci-robot
Copy link
Contributor

@zetxqx: The label(s) kind/test cannot be applied, because the repository doesn't have them.

In response to this:

What type of PR is this?

/kind test
/area conformance-test

What this PR does / why we need it:

A conformance test to verify that the gateway correctly reports the endpoint that served the request.

verified with GKE

go test -v ./conformance -args -debug -gateway-class gke-l7-regional-external-managed -cleanup-base-resources=false -allow-crds-mismatch=true -run-test GatewayDestinationEndpointServed

Result:

   roundtripper.go:262: 2025-11-13T19:18:07.43605216Z: Received Response:
       < HTTP/1.1 200 OK
       < Connection: close
       < Transfer-Encoding: chunked
       < Content-Type: application/json
       < Date: Thu, 13 Nov 2025 19:18:07 GMT
       < Via: 1.1 google
       < X-Conformance-Test-Served-Endpoint: 10.116.13.18:3000
       < X-Content-Type-Options: nosniff
       < X-Went-Into-Resp-Headers: true
       < 
       < 261
       < {"headers":{"Accept-Encoding":["gzip"],"Test-Epp-Endpoint-Selection":["10.116.13.18"],"User-Agent":["Go-http-client/1.1"],"Via":["1.1 google"],"X-Echo-Set-Header":[""],"X-Forwarded-For":["34.170.214.239,35.212.149.233"],"X-Forwarded-Proto":["http"],"X-Gateway-Destination-Endpoint":["10.116.13.18:3000"],"X-Request-Id":["10d53a31-1740-448b-972c-a7dcfdf33276"]},"host":"primary.example.com","ingress":"","method":"POST","namespace":"inference-conformance-app-backend","path":"/destination-endpoint-served-test","pod":"primary-inference-model-server-deployment-845888f54f-hcblv","proto":"HTTP/1.1","service":""}
       < 0
       < 
       < 
       
       
   http.go:282: 2025-11-13T19:18:07.436225548Z: Request passed
=== NAME  TestConformance/GatewayDestinationEndpointServed
   apply.go:283: 2025-11-13T19:18:07.436304048Z: Deleting httproute-for-destination-endpoint-served HTTPRoute
=== RUN   TestConformance/GatewayFollowingEPPRouting
   conformance.go:66: Skipping GatewayFollowingEPPRouting: test explicitly skipped
=== RUN   TestConformance/GatewayWeightedAcrossTwoInferencePools
   conformance.go:66: Skipping GatewayWeightedAcrossTwoInferencePools: test explicitly skipped
=== RUN   TestConformance/HTTPRouteInvalidInferencePoolRef
   conformance.go:66: Skipping HTTPRouteInvalidInferencePoolRef: test explicitly skipped
=== RUN   TestConformance/HTTPRouteMultipleGatewaysDifferentPools
   conformance.go:66: Skipping HTTPRouteMultipleGatewaysDifferentPools: test explicitly skipped
=== RUN   TestConformance/InferencePoolAccepted
   conformance.go:66: Skipping InferencePoolAccepted: test explicitly skipped
=== RUN   TestConformance/InferencePoolHTTPRoutePortValidation
   conformance.go:66: Skipping InferencePoolHTTPRoutePortValidation: test explicitly skipped
=== RUN   TestConformance/InferencePoolInvalidEPPService
   conformance.go:66: Skipping InferencePoolInvalidEPPService: test explicitly skipped
=== RUN   TestConformance/HTTPRouteMultipleRulesDifferentPools
   conformance.go:66: Skipping HTTPRouteMultipleRulesDifferentPools: test explicitly skipped
=== RUN   TestConformance/InferencePoolResolvedRefsCondition
   conformance.go:66: Skipping InferencePoolResolvedRefsCondition: test explicitly skipped
--- PASS: TestConformance (110.64s)
   --- SKIP: TestConformance/EppUnAvailableFailOpen (0.00s)
   --- PASS: TestConformance/GatewayDestinationEndpointServed (107.07s)
       --- PASS: TestConformance/GatewayDestinationEndpointServed/Request_is_served_by_the_selected_backend_pod (79.48s)
   --- SKIP: TestConformance/GatewayFollowingEPPRouting (0.00s)
   --- SKIP: TestConformance/GatewayWeightedAcrossTwoInferencePools (0.00s)
   --- SKIP: TestConformance/HTTPRouteInvalidInferencePoolRef (0.00s)
   --- SKIP: TestConformance/HTTPRouteMultipleGatewaysDifferentPools (0.00s)
   --- SKIP: TestConformance/InferencePoolAccepted (0.00s)
   --- SKIP: TestConformance/InferencePoolHTTPRoutePortValidation (0.00s)
   --- SKIP: TestConformance/InferencePoolInvalidEPPService (0.00s)
   --- SKIP: TestConformance/HTTPRouteMultipleRulesDifferentPools (0.00s)
   --- SKIP: TestConformance/InferencePoolResolvedRefsCondition (0.00s)
PASS
ok  	sigs.k8s.io/gateway-api-inference-extension/conformance	110.864s

Which issue(s) this PR fixes:

Fixes #1670

Does this PR introduce a user-facing change?:

New conformance test to verify: https://github.com/kubernetes-sigs/gateway-api-inference-extension/tree/main/docs/proposals/004-endpoint-picker-protocol#destination-endpoint-served

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-ci-robot k8s-ci-robot added the area/conformance-test Issues or PRs related to Conformance tests. label Nov 13, 2025
@netlify
Copy link

netlify bot commented Nov 13, 2025

Deploy Preview for gateway-api-inference-extension ready!

Name Link
🔨 Latest commit 88f2055
🔍 Latest deploy log https://app.netlify.com/projects/gateway-api-inference-extension/deploys/691e1f5b58fdaf00087345b2
😎 Deploy Preview https://deploy-preview-1862--gateway-api-inference-extension.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Nov 13, 2025
@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Nov 13, 2025
@zetxqx zetxqx force-pushed the verifyenpointserved branch 2 times, most recently from 8a653d2 to 1708386 Compare November 13, 2025 19:39
@zetxqx
Copy link
Contributor Author

zetxqx commented Nov 13, 2025

/assign @nirrozenbaum @danehans @robscott

@zetxqx zetxqx force-pushed the verifyenpointserved branch from 1708386 to bf6a026 Compare November 13, 2025 22:48
@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Nov 14, 2025
@zetxqx zetxqx force-pushed the verifyenpointserved branch from bf6a026 to e7a278e Compare November 17, 2025 22:32
@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Nov 17, 2025
@zetxqx zetxqx force-pushed the verifyenpointserved branch from e7a278e to 88f2055 Compare November 19, 2025 19:49
@zetxqx
Copy link
Contributor Author

zetxqx commented Nov 19, 2025

/unhold ready for review now.

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Nov 19, 2025
@kfswain
Copy link
Collaborator

kfswain commented Nov 20, 2025

/approve

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Nov 20, 2025
Copy link
Member

@robscott robscott left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @zetxqx!

Description: "A conformance test to verify that the gateway correctly reports the endpoint that served the request.",
Manifests: []string{"tests/gateway_destination_endpoint_served.yaml"},
Features: []features.FeatureName{
features.FeatureName("SupportInferencePool"),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This feels like something that needs a const (similar to SupportGateway)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll have a separate PR for this change to fix #863

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: kfswain, robscott, zetxqx

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@zetxqx zetxqx requested a review from robscott November 20, 2025 20:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. area/conformance-test Issues or PRs related to Conformance tests. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Conformance: Add test for x-gateway-destination-endpoint-served

6 participants